﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Cotizav.CONEXION;
using Cotizav.CONTROLADOR;
using Cotizav.PRESENTACION.Cotizacion.Report;
using Cotizav.PRESENTACION.Equipo;
using Cotizav.PRESENTACION.Persona.Contacto;
using Cotizav.PRESENTACION.Condicion;

namespace Cotizav.PRESENTACION.Cotizacion
{
    public partial class IUCotizacion : UserControl
    {
        private CtrlCotizacion ctCotizacion;
        private CtrlCotizacion_Detalle ctCotizacionDetalle;

        private COTIZACION cotizacion;
        private List<COTIZACION_DETALLE> selectedListCotizacionDetalle;

        public IUCotizacion()
        {
            InitializeComponent();

            ctCotizacion = new CtrlCotizacion();
            ctCotizacionDetalle = new CtrlCotizacion_Detalle();

            selectedListCotizacionDetalle = new List<COTIZACION_DETALLE>();
        }

        internal void mostrarCotizacion(string idCotizacion)
        {
            cotizacion = ctCotizacion.getCotizacion(idCotizacion);
            selectedListCotizacionDetalle = ctCotizacionDetalle.getListCotizacionDetalle(idCotizacion);

            gbInformacionBasica.Tag = cotizacion.idCotizacion;
            txtCotizacion.Text = cotizacion.codigoCotizacion;
            txtfechaRegistro.Text = cotizacion.fechaRegistro.GetValueOrDefault().ToString();
            txtReferencia.Text = cotizacion.referencia;
            txtObra.Text = cotizacion.obra;
            txtCliente.Text = cotizacion.nombrecliente;
            txtVendedor.Text = cotizacion.nombreVendedor;
            txtSucursal.Text = cotizacion.nombresucursal;
            cmbTipoCotizacion.SelectedIndex = cotizacion.esAlquiler == 'S' ? 0 : cotizacion.esVenta == 'S' ? 1 : -1 ;

            txtMoneda.Text = cotizacion.moneda;
            txtTipoCambio.Text = cotizacion.tipoCambio.GetValueOrDefault().ToString("N");
            txtIGV.Text = cotizacion.igv;

            txtEquiposRegistrados.Text = selectedListCotizacionDetalle.Count().ToString();

            btnVerContactos.Tag = idCotizacion;
            btnVerEquipos.Tag = selectedListCotizacionDetalle;
            btnVerCondiciones.Tag = idCotizacion;
            btnVerCondiciones.Tag = idCotizacion;
            btnVerDocumento.Tag = idCotizacion;
        }

        private void IUCotizacion_Load(object sender, EventArgs e)
        {

        }

        private void btnVerDocumento_Click(object sender, EventArgs e)
        {
            //muestra el documento de la cotización
            if (gbInformacionBasica.Tag != null)
            {
                string idCotizacion = gbInformacionBasica.Tag.ToString();

                if (!string.IsNullOrWhiteSpace(idCotizacion))
                {
                    ReporteCotizacion iuRepCotizacion = new ReporteCotizacion(idCotizacion, cmbTipoCotizacion.SelectedItem.ToString());
                    iuRepCotizacion.MdiParent = this.ParentForm.MdiParent;
                    iuRepCotizacion.Show();
                } 
            }
        }

        private void btnVerEquipos_Click(object sender, EventArgs e)
        {
            if (btnVerEquipos.Tag != null)
            {
                List<COTIZACION_DETALLE> selCotDetalle = btnVerEquipos.Tag as List<COTIZACION_DETALLE>;

                VerEquipos iuVerEquipos = new VerEquipos(selCotDetalle, cotizacion.codigoCotizacion, cmbTipoCotizacion.SelectedItem.ToString());
                bool formFound = false;
                Form formParent = this.ParentForm.MdiParent;

                foreach (Form f in formParent.MdiChildren)
                {
                    if (f.Name == iuVerEquipos.Name)
                    {
                        f.Focus();
                        formFound = true;
                        break;
                    }
                    else
                    {
                        formFound = false;
                    }
                }

                if (!formFound)
                {
                    iuVerEquipos.MdiParent = formParent;
                    iuVerEquipos.Show();
                }
            }
        }

        private void btnVerContactos_Click(object sender, EventArgs e)
        {
            if (btnVerContactos.Tag != null)
            {
                VerContacto iuVerContacto = new VerContacto(btnVerContactos.Tag.ToString());
                bool formFound = false;
                Form formParent = this.ParentForm.MdiParent;
                
                foreach (Form f in formParent.MdiChildren)
                {
                    if (f.Name == iuVerContacto.Name)
                    {
                        f.Focus();
                        formFound = true;
                        break;
                    }
                    else
                    {
                        formFound = false;
                    }
                }

                if (!formFound)
                {
                    iuVerContacto.MdiParent = formParent;
                    iuVerContacto.Show();
                }
            }
        }

        private void btnVerFormatos_Click(object sender, EventArgs e)
        {
            if (btnVerCondiciones.Tag != null)
            {
                VerCondicion iuVerCondicion = new VerCondicion(btnVerCondiciones.Tag.ToString());
                bool formFound = false;
                Form formParent = this.ParentForm.MdiParent;

                foreach (Form f in formParent.MdiChildren)
                {
                    if (f.Name == iuVerCondicion.Name)
                    {
                        f.Focus();
                        formFound = true;
                        break;
                    }
                    else
                    {
                        formFound = false;
                    }
                }

                if (!formFound)
                {
                    iuVerCondicion.MdiParent = formParent;
                    iuVerCondicion.Show();
                }
            }
        }
    }
}
